/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.pnp.digitalizar.despachadores;

import java.sql.*;
import java.util.*;
import pe.gob.pnp.digitalizar.beans.*;
import pe.gob.pnp.factories.*;

/**
 *
 * @author Eduardo
 */
public class IndiceDespachador {
    public static void guardarIndices(DocumentoDigitalizadoBean documento, Map<String, String> mapaCampos, int idUsuario) throws SQLException {
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "INSERT INTO DIGMA_INDEXADO(NDODI_IDENTIFICADOR,NINDE_IDENTIFICADOR,CINDE_VALOR,DINDE_FECHAACTUALIZACION,";
            sql += " NUSUA_IDENTIFICADOR,CINDE_CRITERIO)";
            sql += " VALUES(?,SEQ_NINDE_IDENTIFICADOR.NEXTVAL,?,SYSDATE,?,?)";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, documento.getId());
            ps.setInt(3, idUsuario);
            Set<String> llaves = mapaCampos.keySet();
            for (String llave : llaves){
                ps.setString(2, mapaCampos.get(llave));
                ps.setString(4, llave);
                ps.executeUpdate();
            }
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
    }
    public static void actualizarIndices(DocumentoDigitalizadoBean documento, Map<String, String> mapaCampos, int idUsuario) throws SQLException {
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "UPDATE DIGMA_INDEXADO SET CINDE_VALOR=?, DINDE_FECHAACTUALIZACION=SYSDATE";
            sql += " WHERE NDODI_IDENTIFICADOR = ?";
            sql += " AND CINDE_CRITERIO=?";

            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(2, documento.getId());
            Set<String> llaves = mapaCampos.keySet();
            for (String llave : llaves){
                ps.setString(1, mapaCampos.get(llave));
                ps.setString(3, llave);
                ps.executeUpdate();
            }
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
    }
     public static List<IndiceFolioBean> obtenerIndicesxDocumento(int iddocumento) throws SQLException {
        List<IndiceFolioBean> indices = new ArrayList<IndiceFolioBean>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "SELECT NDODI_IDENTIFICADOR,NINDE_IDENTIFICADOR,";
            sql += " CINDE_VALOR,NUSUA_IDENTIFICADOR,CINDE_CRITERIO";
            sql += " FROM DIGMA_INDEXADO WHERE NDODI_IDENTIFICADOR=?";
            sql += " AND BINDE_ELIMINADO=0";
            sql += " ORDER BY NINDE_IDENTIFICADOR ";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, iddocumento);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                IndiceFolioBean indice = new IndiceFolioBean();
                indice.setNdodiidentificador(rs.getInt("NDODI_IDENTIFICADOR"));
                indice.setNindeidentificador(rs.getInt("NINDE_IDENTIFICADOR"));
                indice.setCindevalor(rs.getString("CINDE_VALOR"));
                indice.setNusuaidentificado(rs.getInt("NUSUA_IDENTIFICADOR"));
                indice.setCindecriterio(rs.getString("CINDE_CRITERIO"));
                indices.add(indice);
            }
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return indices;
    }
}
